package jp.ne.iforce.android.wifioffload;

import jp.ne.iforce.android.wifioffload.R;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

// 画像のプレビューからバーコードを取得してAmazonで検索を行う。
public class BarCodeActivity extends Activity {

    final static String TAG = "Wifi";
    private static final int INCORRECT_BARCODE_TYPE = 0;

    private FinderView mFinderView;
    private Preview mPreview;
    //メソッド間の受け渡しのためだけに使う
    private String mBarcodeType;
    //バーコードタイプが解析対象外の場合に表示するダイアログの説明文
    private String mIncorrectBarcodeError;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 画面を明るい状態に保つ
        Window window = getWindow();
        window.addFlags(
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.barcode);

        // プレビュー用のファインダーを表示する
        mFinderView = (FinderView) findViewById(R.id.viewfinder_view);
        mPreview = (Preview) findViewById(R.id.preview_surface);
        mPreview.setFinder(mFinderView);

        mIncorrectBarcodeError =
            getResources().getString(R.string.incorrect_barcode_error);
    }

    void requestAutoFocus() {
        mPreview.requestAutoFocus();
    }

    @Override
    protected void onStop() {
        super.onStop();
        mPreview.closeCamera();
    }

    // バーコードの内容が解析できな場合にダイアログを表示する
    void showIncorrectDialog(String barcodeType) {
        mBarcodeType = barcodeType;
        showDialog(INCORRECT_BARCODE_TYPE);
    }

    // ダイアログの表示。ボタンが押されると再度解析を開始する
    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
          case INCORRECT_BARCODE_TYPE:
            return
                new AlertDialog.Builder(BarCodeActivity.this).setIcon(
                    R.drawable.alert_dialog_icon).setTitle(mBarcodeType + " : " + mIncorrectBarcodeError)
                .setPositiveButton(R.string.alert_dialog_ok,
                  new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface dialog,
                                          int whichButton) {
                          //オートフォーカス開始
                          mPreview.requestAutoFocus();
                      }
                  }).setNegativeButton(R.string.alert_dialog_cancel,
                       new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog,
                                               int whichButton) {
                               //オートフォーカス開始
                               mPreview.requestAutoFocus();
                           }
                       }).create();
        }
        return null;
    }

    void startSms(){
    	Intent i = new Intent(getApplicationContext(),SmsActivity.class);
        startActivity(i);
    }
}